Hamming distance between 2 integers

Time: O(1); Space: O(1); easy

The Hamming distance between two integers is the number of positions at which the corresponding bits are different.

Example 1:

Input: x = 1, y = 4

Output: 2

Explanation:

  • 1   (0 0 0 1)

  • 4   (0 1 0 0)

  • .      ^   ^

  • The above arrows point to positions where the corresponding bits are different.

Constraints:

  • 0 < x, y < 231

[1]:
class Solution1(object):
    def hammingDistance(self, x, y) -> int:
        """
        :type x: int
        :type y: int
        :rtype: int
        """
        distance = 0
        z = x ^ y
        while z:
            distance += 1
            z &= z - 1
        return distance
[2]:
s = Solution1()
assert s.hammingDistance(1, 4) == 2
[3]:
class Solution2(object):
    def hammingDistance(self, x, y) -> int:
        """
        :type x: int
        :type y: int
        :rtype: int
        """
        return bin(x ^ y).count('1')
[4]:
s = Solution2()
assert s.hammingDistance(1, 4) == 2